home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib08.dsk / STAT PAK.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  104 lines

  1. 1  REM  **********************
  2. 2  REM  *      STAT PAK      *
  3. 3  REM  * BY STEVEN SCHWARTZ *
  4. 4  REM  * COPYRIGHT (C) 1982 *
  5. 5  REM  * BY MICRO-SPARC INC *
  6. 6  REM  * LINCOLN, MA. 01773 *
  7. 7  REM  **********************
  8. 10  REM  TITLE PAGE
  9. 20  HOME : FOR I = 1 TO 20: PRINT "*-";: NEXT I: PRINT 
  10. 30  PRINT "   D A T A  D E S C R I P T I O N": PRINT : FOR I = 1 TO 20: PRINT "*-";: NEXT I
  11. 40  VTAB 23: INVERSE : PRINT "* BY STEVEN A. SCHWARTZ *": NORMAL 
  12. 50  FOR I = 1 TO 4000: NEXT I: HOME 
  13. 60  REM  SET NO. OF VARIABLES AND CASES
  14. 70  INPUT "ENTER NUMBER OF VARIABLES: ";NVAR
  15. 80  IF NVAR <1  THEN  INVERSE : PRINT "NO. OF VARIABLES MUST BE AT LEAST 1.": NORMAL : GOTO 70
  16. 90  INPUT "ENTER NUMBER OF CASES:    ";CASE
  17. 100  IF CASE < = 1  THEN  INVERSE : PRINT "YOU MUST HAVE MORE THAN 1 CASE.": NORMAL : GOTO 90
  18. 110  DIM NAME$(NVAR),A(CASE,NVAR),SUM(NVAR),MEAN(NVAR),MAX(NVAR),MIN(NVAR),RANGE(NVAR),S2(NVAR),SD(NVAR),SE(NVAR)
  19. 120  REM  ** ASSIGN NAMES TO VARIABLES
  20. 130  HOME : PRINT "ENTER NAME FOR EACH VARIABLE: ": PRINT : PRINT 
  21. 140  FOR I = 1 TO NVAR
  22. 150  PRINT  TAB( 5)"VAR.  ";I;" = ";
  23. 160  INPUT NAME$(I)
  24. 170  IF  LEN(NAME$(I)) >40  THEN  INVERSE : PRINT "MAX. IS 40 CHARACTERS.": NORMAL : GOTO 150
  25. 180  IF NAME$(I) = ""  THEN  INVERSE : PRINT "PLEASE ENTER A NAME.": NORMAL : GOTO 150
  26. 190  NEXT I
  27. 200  REM  ** DATA INPUT
  28. 210  HOME : FOR I = 1 TO CASE
  29. 220  PRINT "DATA FOR SUBJECT ";I: PRINT : PRINT 
  30. 230  FOR J = 1 TO NVAR
  31. 240  PRINT NAME$(J);" = ";
  32. 250  INPUT A(I,J)
  33. 260  NEXT J
  34. 270  HOME 
  35. 280  NEXT I
  36. 290  REM  ** ANALYSES
  37. 300  FOR J = 1 TO NVAR
  38. 310  GOSUB 570
  39. 320  GOSUB 630
  40. 330  GOSUB 660
  41. 340  GOSUB 750
  42. 350  GOSUB 840
  43. 360  GOSUB 870
  44. 370  GOSUB 950
  45. 380  NEXT J
  46. 390  REM  ** OUTPUT
  47. 400  FOR J = 1 TO NVAR
  48. 410  HOME :CEN = 20 - INT(( LEN(NAME$(J)))/2)
  49. 420  FOR I = 1 TO 40: PRINT "*";: NEXT I: PRINT 
  50. 430  PRINT  TAB( CEN)NAME$(J): PRINT 
  51. 440  FOR I = 1 TO 40: PRINT "*";: NEXT I: PRINT : PRINT 
  52. 450  PRINT "SUM          = ";SUM(J)
  53. 460  PRINT "MEAN         = ";MEAN(J)
  54. 470  PRINT "MAXIMUM      = ";MAX(J)
  55. 480  PRINT "MINIMUN      = ";MIN(J)
  56. 490  PRINT "RANGE        = ";RANGE(J)
  57. 500  PRINT "VARIANCE     = ";S2(J)
  58. 510  PRINT "STAND. DEV.  = ";SD(J)
  59. 520  PRINT "STAND. ERR. = ";SE(J)
  60. 530  PRINT : PRINT "NO. OF CASES = ";CASES
  61. 540  VTAB 24: INVERSE : PRINT "       PRESS ANY KEY TO CONTINUE      ";: GET Z$: NORMAL 
  62. 550  NEXT J
  63. 560  HOME : END 
  64. 570  REM  ** COMPUTE TOTAL (SUM)
  65. 580 SUM(J) = 0
  66. 590  FOR I = 1 TO CASE
  67. 600 SUM(J) = SUM(J) +A(I,J)
  68. 610  NEXT I
  69. 620  RETURN 
  70. 630  REM  ** COMPUTE MEAN
  71. 640 MEAN(J) = SUM(J)/CASE
  72. 650  RETURN 
  73. 660  REM  ** FIND MAXIMUM VALUE
  74. 670 MAX(J) = A(1,J)
  75. 680 Z = 1
  76. 690  FOR I = 2 TO CASE
  77. 700  IF A(I,J) < = MAX(J)  THEN 730
  78. 710 Z = I
  79. 720 MAX(J) = A(Z,J)
  80. 730  NEXT I
  81. 740  RETURN 
  82. 750  REM  ** FIND MINIMUM VALUE
  83. 760 MIN(J) = A(1,J)
  84. 770 Z = 1
  85. 780  FOR I = 2 TO CASE
  86. 790  IF A(I,J) > = MIN(J)  THEN 820
  87. 800 Z = I
  88. 810 MIN(J) = A(Z,J)
  89. 820  NEXT I
  90. 830  RETURN 
  91. 840  REM  ** CALCULATE RANGE
  92. 850 RANGE(J) = MAX(J) -MIN(J)
  93. 860  RETURN 
  94. 870  REM  ** CALCULATE VARIANCE AND STANDARD DEVIATION
  95. 880 SS = O
  96. 890  FOR I = 1 TO CASE
  97. 900 SS = SS +(A(I,J) -MEAN(J)) ^2
  98. 910  NEXT I
  99. 920 S2(J) = SS/(CASE -1)
  100. 930 SD(J) =  SQR(S2(J))
  101. 940  RETURN 
  102. 950  REM  ** CALCULATE STANDARD ERROR OF THE MEAN
  103. 960 SE(J) = SD(J)/( SQR(CASE))
  104. 970  RETURN